package CreationMode.Factory;

/**
 * <h3>23_Design_Patterns</h3>
 * <p>
 *     工厂方法模式
 *     简单工厂和工厂方法模式的对比
 *
 *     1. 简单工厂只有一个工厂，而工厂方法有多个工厂
 *     2. 简单工厂不支持扩展，而工厂方法支持扩展，扩展的方式就是添加对应的工厂类即可
 *     3. 简单工厂代码复杂度低，工厂方法代码复杂度高
 * </p>
 *
 * @author gdw
 * @since 2025-07-21 11:24:05
 */
public class FactoryMethod {

    public static void main(String[] args) {
        new AudiCarFactory().createCar().run();
        new BydCarFactory().createCar().run();
    }

public static interface  Car{
    public void run();
}

public static class Byd implements Car{
    @Override
    public void run() {
        System.out.println("比亚迪...");
    }
}

public static class Audi implements Car{
    @Override
    public void run() {
        System.out.println("奥迪...");
    }
}

public static interface CarFactory{
    public Car createCar();
}

// 扩展的工厂
public static class AudiCarFactory implements CarFactory{
    @Override
    public Car createCar() {
        return new Audi();
    }
}

public static class BydCarFactory implements CarFactory {
    @Override
    public Car createCar() {
        return new Byd();
    }
}
    }


